home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 176-200 / scopedisk189 / acron42 / start.a < prev    next >
Text File  |  1995-03-19  |  3KB  |  121 lines

  1.        INCLUDE "macros.i"
  2.        INCLUDE "exec/types.i"
  3.        INCLUDE "exec/ables.i"
  4.        INCLUDE "exec/execbase.i"
  5.        INCLUDE "libraries/dosextens.i"
  6.        INCLUDE "libraries/arpbase.i"
  7.  
  8. ExecBase       EQU     4
  9.  
  10.        xref    LinkerDB,_BSSBAS,_BSSLEN
  11.        xref    run,cmdline,cmdlen
  12.  
  13.        csect   _STARTUP,0,0,0,4
  14.  
  15. start  RESIDENT        2000
  16.        lea     LinkerDB,a4
  17.        tst.l   d0
  18.        beq.s   nocmd
  19.        move.l  d0,cmdlen
  20.        lea     cmdline,a1
  21.        bra.s   cpy1
  22. cpy_cmd        move.b  (a0)+,(a1)+
  23. cpy1   dbf     d0,cpy_cmd
  24.        bra.s   cont
  25.  
  26. nocmd  move.w  $1000,cmdline
  27.        moveq.l #1,d0
  28.        move.l  d0,cmdlen
  29.  
  30. cont   lea     _BSSBAS,a3
  31.        moveq.l #0,d1
  32.        move.l  #_BSSLEN,d0
  33.        bra.s   clr_lp
  34. clr_bss        move.l  d1,(a3)+
  35. clr_lp dbf     d0,clr_bss
  36.  
  37.        move.l  ExecBase.w,a6
  38.        lea     Arp,a1
  39.        moveq.l #ArpVersion,d0
  40.        Call    OpenLibrary
  41.        move.l  d0,ArpBase(a4)
  42.        beq     noarp
  43.        move.l  d0,a0
  44.        move.l  ab_IntuiBase(a0),IntuitionBase(a4)
  45.        move.l  ab_DosBase(a0),d0
  46.        move.l  d0,DOSBase(a4)
  47.  
  48.        move.l  ThisTask(a6),a3
  49.        move.l  pr_CurrentDir(a3),d1
  50.        move.l  d0,a6
  51.        Call    DupLock
  52.        move.l  d0,curdir(a4)
  53.  
  54.        lea     pcb,a2
  55.        move.l  #2000,pcb_StackSize(a2)
  56.        move.b  LN_PRI(a3),pcb_Pri(a2)
  57.        move.b  #PRF_CLOSESPLAT,pcb_Control(a2)
  58.  
  59.        move.l  #CON,d1
  60.        move.l  #MODE_OLDFILE,d2
  61.        move.l  DOSBase(a4),a6
  62.        Call    Open
  63.        move.l  d0,pcb_Output(a2)
  64.        move.l  d0,pcb_Input(a2)
  65.  
  66.        lea     start-4(pc),a3
  67.        move.l  (a3),pcb_LoadedCode(a2)
  68.        move.l  (a3),seglist(a4)
  69.        move.l  ExecBase.w,a6
  70.        FORBID
  71.        suba.l  a1,a1
  72.        lea     name(pc),a0
  73.        move.l  ArpBase(a4),a6
  74.        Call    ASyncRun
  75.  
  76.        lea     args(pc),a1
  77.  
  78.        tst.l   d0
  79.        bmi.s   starterr
  80.  
  81.        clr.l   (a3)
  82.        move.w  d0,4(a1)
  83.        lea     startmess(pc),a0
  84.        Call    Printf
  85.        bra.s   noclose
  86.  
  87. starterr       lea     error(pc),a0
  88.        Call    Printf
  89.        move.l  curdir(a4),d1
  90.        Call    UnLock
  91.        movea.l a6,a1
  92.        move.l  ExecBase.w,a6
  93.        Call    CloseLibrary
  94. noclose        move.l  ExecBase.w,a6
  95. ;      Call    Permit
  96.  
  97. noarp  rts
  98.  
  99. args   dc.l    name
  100. num    dc.w    0
  101.  
  102. pcb    ds.b    pcb_SIZEOF
  103. name   dc.b    "AmiCron",0
  104. CON    dc.b    "NIL:",0
  105.  
  106. Arp    dc.b    "arp.library",0
  107. error  dc.b    "Could not create %s-process!",10,0
  108. startmess      dc.b    "%s started at background shell %d",10,0
  109.  
  110.        csect   __MERGED,1,0,0,4
  111.  
  112.        xdef    IntuitionBase,ArpBase,DOSBase,curdir,seglist
  113.  
  114. seglist        dc.l    0
  115. curdir dc.l    0
  116. ArpBase        dc.l    0
  117. DOSBase        dc.l    0
  118. IntuitionBase
  119.        dc.l    0
  120.        END
  121.